package com.dkm.orproject.dkmoa.service.flow;

import com.dkm.orproject.dkmoa.domain.OaGradeFlow;
import com.dkm.orproject.dkmoa.domain.OaPersonnel;

import java.util.List;

/**
 *  @ClassName : OaGradeFlowService  //类名
 *  @Description : 员工评级  //描述
 *  @Author : 石智诚  //作者
 *  @Date: 2020-10-10 13:51  //时间
 */
public interface OaGradeFlowService {
    /**
     * 根据定级id删除
     * @param pkGradeId 定级id
     * @return 影响的行数
     */
    int deleteByPrimaryKey(Long pkGradeId);

    int deleteByAll(List<Long> list);
    /**
     * 根据定级id查询
     * @param pkGradeId 定级id
     * @return 影响的行数
     */
    OaGradeFlow selectByPrimaryKey(Long pkGradeId);

    /**
     * 根据id 更新
     * @param record 定级模型
     * @return 影响的行数
     */
    int updateByPrimaryKey(OaGradeFlow record);

    List<OaGradeFlow> findAll(OaGradeFlow gradeFlow,Integer page,Integer limit,String startTime,String endTime);

    Long rowCount(OaGradeFlow gradeFlow,String startTime,String endTime);

    /**
     * 定级流程的增加
     * @param record 定级模型
     * @return 影响的行数
     */
    int insert(OaGradeFlow record,OaPersonnel personnel);

    /**
     * 行政部填写
     * @param gradeFlow 定级流程
     * @param personnel 操作人
     * @return 成功的数量
     */
    int staffingWrite(OaGradeFlow gradeFlow,OaPersonnel personnel);
    /**
     * 员工所在的部门审核（通过的情况下）
     * @param gradeFlow 定级ID
     * @param personnel 人员名字
     * @return 更新的数量
     */
    int departmentPass(OaGradeFlow gradeFlow,OaPersonnel personnel);

    /**
     * 员工所在的部门审核（通过的情况下）
     * @param gradeFlow 定级ID
     * @param personnel 人员名字
     * @return 更新的数量
     */
    int departmentNoPass(OaGradeFlow gradeFlow, OaPersonnel personnel, String formReason);

    /**
     * 人事部门审核（通过的情况下）
     * @param gradeFlow 定级ID
     * @param personnel 人员
     * @return 更新的数量
     */
    int staffingPass(OaGradeFlow gradeFlow, OaPersonnel personnel);

    /**
     * 人事和部门领导和总经理部门审核（不通过的情况下）
     * @param gradeFlow 定级ID
     * @param personnel 人员名字
     * @param formReason 不同意的
     * @return 更新的数量
     */

    int staffingNoPass(OaGradeFlow gradeFlow, OaPersonnel personnel, String formReason);
    /**
     * 总经理审核（通过的情况下）
     * @param gradeFlow 定级ID
     * @param personnel 人员名字
     * @return 更新的数量
     */
    int executivePass(OaGradeFlow gradeFlow, OaPersonnel personnel);

    /**
     * 人事和部门领导和总经理部门审核（不通过的情况下）
     * @param gradeFlow 定级ID
     * @param personnel 人员名字
     * @param formReason 不同意的
     * @return 更新的数量
     */

    int executiveNoPass(OaGradeFlow gradeFlow, OaPersonnel personnel, String formReason);

    OaGradeFlow isExist(OaPersonnel personnel);

    List<OaGradeFlow> selectAll(List<Long> list);
}
